package com.itheima.d1_byteio;

import java.io.FileInputStream;

//目标：掌握使用文件字节输入流每次读取一个字节数组
public class Demo02 {
    public static void main(String[] args) throws Exception {
        /**
         * int read(byte[] buffer)：每次使用字节数组来读取数据，返回读取的字节个数，如果没有可读返回-1
         *
         * 需求：使用文件字节输入流一次读取一个字节数组，读取a.txt文件中的数据
         */

        //1.创建FileInputStream对象，给它一个路径定位a.txt文件
        FileInputStream fis = new FileInputStream("day12\\a.txt");

        //2.创建一个字节数组，用来存储每一次读取到的字节数据
        byte[] bys = new byte[5];
        int read = fis.read(bys);

        //3.循环读取，条件：当读取方法返回值不是-1的时候就继续
        //定义变量，接收读取方法返回的每一次读取到的字节个数
        int len;
        while ((len = fis.read(bys)) != -1) {
            //如果进入循环，说明读取了len个字节，放入bys数组中
//            System.out.println(len);

            //把bys数组中的字节数据，进行解码。使用String的构造器，只能从字节数组的0号索引开始，解码len个字节
            String str = new String(bys, 0, len);
            System.out.println(str);
        }

        //结论：虽然一次读取一个字节数组可以提高读取效率，但是不能解决中文乱码问题！
    }
}
